package com.season.seasonStudy.javase.j_021_io;

import java.io.File;
import java.io.IOException;

/**
 * 文件可认为是相关记录或放在一起的数据的集合
 * 
 * File类访问文件属性,对文件/目录进行操作
 *		File file = new File(String filePathName);
 * 
 * 常用方法
 * 		boolean exists();			判断文件/目录是否存在
 * 		boolean isFile();			判断是否是文件
 * 		boolean isDirectory();				目录
 * 
 * 		String getPath();			获得对象所表示的文件的相对路径
 * 		String getAbsolutePath();	获得文件的绝对路径
 * 
 * 		String getName();			获得名称		最后一个,前面都是路径
 * 		boolean delete();			删除
 * 		boolean createNewFile();	创建空文件,不创建文件夹
 * 		long length();				获得文件长度
 * 		
 * 流,对文件进行操作
 * 			1.流是一组有序的数据序列
 * 			2.以先进先出方式发送信息的通道
 * 				输入流(硬盘→内存)		输出流(内存→硬盘)	输入输出流是相对于计算机内存来说的
 * 		字节流	Reader					Writer				8位通用字节流
 * 		字符流	InputStream				OutputStream		16位Unicode字符流
 * 
 * 文本文件的读写:
 * 		1.FileInputStream	FileOutputStream
 * 		2.BufferedReader	BufferedWriter
 * 
 * 二进制文件的读写:
 * 		DataInputStream		DataOutputStream
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 */
public class IODemo {
	public static void main(String[] args) throws Exception {
		
		//file属性
		File files[] = {
				new File("C:/Users\\jijie/Desktop/file/newFile.txt"),	//存在的
				new File("C:/Users\\jijie/Desktop/file"),				//存在的
				
				new File("C:/Users\\jijie/Desktop/file/fakeFile.txt"),
				new File("C:/Users\\jijie/Desktop/fakeFile/newFile.txt")
		};
		System.out.println("-----------------");
		System.out.println(new File("C:/Users\\jijie/Desktop/file/newFile.txt").createNewFile());
		System.out.println("-----------------");
		for (File file : files) {
			try {
				System.out.println("获得路径:"+file.getPath());
				System.out.println("绝对路径:"+file.getAbsolutePath());
				System.out.println("得到名字:"+file.getName());
				System.out.println("是否存在:"+file.exists());
				System.out.println("父路径:"+file.getParent());
				System.out.println("获得付路径File"+file.getParentFile());
				System.out.println("是否是目录:"+file.isDirectory());
				System.out.println("是否隐藏:"+file.isHidden());
				System.out.println("是否是文件"+file.isFile());
				System.out.println("文件长度"+file.length());
				System.out.println("删除"+file.delete());
				System.out.println("文件内容长度"+file.length());
				System.out.println("设立操作权限"+file.setExecutable(false));
				System.out.println();
				System.out.println("----------Try again !----------");
			} catch(Exception e){
				e.printStackTrace();
			}
		}
		
		File file=new File("C:/Users\\jijie/Desktop/myfile/ccc.txt");		//创建一个File实例对象
		/**
		 * File构造方法,暂时只需要知道3个
		 * new File(String pathName);				//单纯new一个File实例类
		 * new File(String parent,	String child);	//构造一个parent下的一个child的File类
		 * new File(File   parent,	String child);	//同上,只是不用路径创建
		 */
		System.out.println(file.exists());	//file是否存在
		if(!file.exists())
			System.out.println(file.mkdirs());
			/**
			 * mkdir() 		创建此抽象路径名指定的目录。若上一层目录不存在,一切都是空,return false
			 * boolean mkdirs()		创建此抽象路径名指定的目录，包括所有必需但不存在的父目录。 
			 * 
			 * 创建新的文件:	createNewFile();
			 */

		File f=new File(file,"aa.txt");
		System.out.println(f.getPath());
		System.out.println(f.exists());
		try {
			f.createNewFile();	//创建新的文件,但是当parent目录不存在的情况下,会出异常的哦
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
